package Atop100;

import listNodePractice.ListNode;

public class Class2 {

    //TODO:2023/9/15 下面的这个解决办法不行
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        traverse(l1);
        String s1=stringBuilder.toString();
        stringBuilder=new StringBuilder();
        traverse(l2);
        String s2=stringBuilder.toString();
        int a1= Integer.valueOf(s1);
        int a2= Integer.valueOf(s2);
        int a=a1+a2;

        ListNode dumpy = new ListNode(-1);
        ListNode p=dumpy;
        if (a==0){
            p.next=new ListNode(0);
        }
        while (a!=0){
            ListNode node = new ListNode(a % 10);
            p.next=node;
            p=p.next;
            a/=10;
        }
        return  dumpy.next;
    }

   StringBuilder  stringBuilder=   new StringBuilder();
    public  void traverse(ListNode head){
        //TODO:2023/9/15  下面的错误很经典    递归怎么嵌套上while循环了呢  使用递归心里就默默地想递归的格式
        //TODO:2023/9/15 先想递归的终止条件 然后 再递归
//        while (head!=null){
//            head=head.next;
//            if (head!=null){
//                traverse(head);
//                stringBuilder.append(head.val);
//            }
////            traverse(head);
////            stringBuilder.append(head.val);
//        }
//        return  stringBuilder.toString();
        if (head==null){
           return;
        }
        traverse(head.next);
        stringBuilder.append(head.val);
    }

    //TODO:2023/9/15  参考别人的解决办法

    public ListNode addTwoNumbers1(ListNode l1, ListNode l2) {
        int sum = l1.val+l2.val;
        int plus = sum>9?1:0;
        ListNode res = new ListNode(sum%10);
        ListNode temp = res;
        ListNode b1 = l1.next;
        ListNode b2 = l2.next;
        while(b1!=null||b2!=null||plus==1){
            int sumt = (b1!=null?b1.val:0)+(b2!=null?b2.val:0)+plus;
            plus=sumt>9?1:0;
            temp.next = new ListNode(sumt%10);
            temp=temp.next;
            if(b1!=null){
                b1=b1.next;
            }
            if(b2!=null){
                b2=b2.next;
            }
        }
        return res;
    }






    public static void main(String[] args) {
        ListNode listNode1 = new ListNode(0);
//        ListNode listNode2 = new ListNode(2);
//        ListNode listNode3 = new ListNode(3);
//        ListNode listNode4 = new ListNode(4);
//        ListNode listNode5 = new ListNode(5);
//        listNode1.next=listNode2;
//        listNode2.next=listNode3;
//        listNode3.next=listNode4;
//        listNode4.next=listNode5;


        ListNode listNode11 = new ListNode(0);
//        ListNode listNode33 = new ListNode(2);
//        ListNode listNode77 = new ListNode(3);
//        listNode11.next=listNode33;
//        listNode33.next=listNode77;


        Class2 class2 = new Class2();
//        class2.traverse(listNode1);
//        System.out.println(class2.stringBuilder.toString());
        class2.addTwoNumbers(listNode1,listNode11);



    }



}
